1. Technical Field
The present invention relates in general to disk arrays and in particular to failure recovery in disk arrays. Still more particularly, the present invention relates to speeding data regeneration during failure recovery in disk arrays.
2. Description of the Related Art
Data processing systems typically store critical programs and data on magnetic disk drives for use during data processing. Often the magnetic disk drives are large and only one drive is attached to the data processing system. However, multiple disk drives may be employed to provide a more reliable and flexible data storage subsystem. In data processing systems that require reliable access to the data storage, multiple disk drives are utilized primarily to provide failure recovery capabilities for primary storage drives. Additionally, the storage capacity and performance of data processing systems may be increased by employing multiple, smaller form-factor drives instead of a single, large drive.
Storage subsystems with multiple drives may comprise a group of disk drives with no particular arrangement or configuration, or a disk array including a specific controller and a particular data storage scheme. Disk arrays, also referred to as Redundant Array of Independent Disk ("RAID") devices, are utilized with data processing systems to increase data availability and storage capacity, to provide performance flexibility, and to increase data protection. RAID devices include special controllers which permit all of the drives within the RAID subsystem to appear as a single storage device to the host data processing system.
Performance of the data transactions to RAID storage devices may be enhanced by spreading segments of data over the multiple drives and then allowing the drives to operate on a request simultaneously. Thus, RAID drive groups often write data in "stripes" (a continuous data parcel written in segments to multiple drives) to improve performance by mapping contiguous data across multiple physical drives. For example, when a data processing system requests four contiguous data segments from a five drive RAID drive-group which supports data striping, the four data segments may actually be written to four different physical drives. The data, resident on four different drives, may be retrieved in a parallel operation, which increases access and speed between the data processing system and the RAID device. Such physical mapping of data, also referred to as data striping, is supported by most RAID classes, including RAID 0, 0+1, 5 and 6.
As the number of drives on a system increases, the likelihood of a drive failing increases. Data mirroring, creating exact copies of data on multiple disks, increases data safety of the data but may significantly reduce the storage capacity of the disk array. Thus, various encoding schemes are generally utilized to reduce the redundancy required for data protection. In RAID drive groups, such encoding typically involves storing computed parity for data segments in the disk array. Typically one or more disks within the drive group is designated as a parity drive containing such computed parity.
When a disk forming part of a RAID device employing parity-based data protection fails, data from that failed disk must be regenerated utilizing parity from the remaining devices and written to a new, replacement disk. Many RAID systems support a "hot spare" disk drive within the drive group for the purpose of holding regenerated data until the failed disk drive is replaced. The problem is that during the data regeneration (or "rebuilding") phase, the performance delivered from the RAID drive array is reduced. Furthermore, failure of another disk drive within the drive array while the data is being regenerated results in complete loss of data.
It would be desirable, therefore, to provide a mechanism for reducing a period of decreased performance of a disk array during a data regeneration phase. It would further be advantageous to improve the performance of a data regeneration phase after a disk failure.